1. Field of the Invention
The present invention relates to an information processing system which builds software by combining a plurality of software components and, more particularly, to a component test supporting technique which supports test processes for respective software components.
2. Description of the Related Art
Upon development of recent large-scale software systems, a method of developing one system by dividing it into a plurality of software components (to be simply referred to as components hereinafter) each having unique unit function is often adopted. As one method of dividing the functions of the overall system into components, a method of storing division know-how upon previous patterns built up as systems, and applying the stored patterns upon developing a new similar system is known.
For example, in a division method called Pipes & Filters patterns, processing which applies arbitrary conversion to input data, and outputs the converted data (this processing will be referred to as filter processing hereinafter) is considered as a unit function, and a system is divided into components along the flows of data. This division method allows to switch and expand functions to be implemented by a system by exchanging filter processing components and changing their combinations, and is applied to many scenes such as a video stream processing system. Also, a method of dividing functions which are more likely to be changed as individual components under the assumption of future functional expansion without applying a specific division pattern to the entire system is known. Conversely, a method of dividing functions which can be commonly used in a plurality of systems as components is available.
In this case, systems which are divided by any of these methods normally include similar component groups which implement identical processing flows having different functions. In a system to which the aforementioned Pipes & Filters patterns are applied, a filter processing component group corresponds to this similar component group.
On the other hand, in order to assure the quality of a system configured by a plurality of components, tests having a plurality of granularities are repetitively conducted in general. For example, tests are conducted by broadening a range step by step like a unit test conducted for each component, a combined test conducted for a combination of a plurality of components, and a system test conducted by integrating the entire system. In this case, for example, when individual components have low qualities as a result of insufficient execution of unit tests, such low qualities are spread to the entire system to drop the quality of the entire system. In order to efficiently conduct tests of respective granularities and to assure the quality of the system, a method of enhancing traceability of test cases, and feeding back combined test results to unit tests is available (Japanese Patent Laid-Open No. 2005-242751).
Upon examining unit tests of a component, a call order of functions (to be referred to as interfaces hereinafter) which are provided by a certain component to another component includes infinite combinations in consideration of redundant calls. Also, combinations of values to be substituted in arguments of respective interfaces are huge, and it is difficult to conduct unit tests of a component for all combinations.
Hence, in general, unit tests are conducted while focusing on test cases in which important test case bugs are expected to be found. For example, as for the interface call order, unit tests are conducted while focusing on a normal scenario and typical abnormal scenario. As for arguments, for example, only combinations of two variables are covered, and infinite parameter values are replaced by finite values using, for example, equivalence partitioning and boundary-value analysis, thereby conducting efficient and effective tests. However, test case focusing processes by these methods largely depend on past experiences and personal skills for a target system, thus causing test errors.
In this case, between similar components such as the filter processing component group which configures the aforementioned Pipes & Filters patterns, if a bug was found in a certain component A, a similar bug is more likely to be included in another component B. In such case, a developer/tester of the component A informs a developer/tester of the component B of bug contents, and it can be confirmed if a similar bug has occurred in the component B. More specifically, the developer/tester of the component B confirms if a test similar to that which found the bug in the component A has already been conducted for the component B. If such test has not been conducted yet, a test case is added to preclude the possibility of the bug.
However, in case of a system configured by many similar components, there are many combinations of similar components, and mutual confirmation processes depending on inter-developer/tester communications have limitations. As a result, components have quality differences, resulting in a quality drop of the entire system.